
/** 通过id找到element */
function $(id)
{
	return document.getElementById(id);
}

/** 通过tag创建element */
function $$(tag)
{
	return document.createElement(tag);
}

/** 在数组中找到obj的下标 */
function find(array, obj)
{
	var index = -1;
	for (var i = 0; i < array.length; i++)
	{
		if (array[i] == obj)
		{
			index = i;
			break;
		}
	}
	return index;
}

/** 从数组中删除obj */
function remove(array, obj)
{
	var index = find(array, obj);
	if (index < 0) return;
	
	array.splice(index, 1);
}

/** 调整窗口大小以适应屏幕 */
function resize()
{
	var container = $("container");
	var height = document.documentElement.clientHeight;
	if (height > container.offsetHeight) container.style.height = height + "px";
}

/** 找到obj相对于浏览器所在的位置 */
function position(obj)
{
	var top = 0;
	var left = 0;
	var width = obj.offsetWidth;
	var height = obj.offsetHeight;
	while (obj.offsetParent) 
	{
		top += obj.offsetTop;
		left += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return {"top":top,"left":left,"width":width,"height":height};
}

/** 是否是日期格式 */
function isDateFormat(source)
{
	// 格式为 2011-1-1 或 2011-01-01
	var pattern = /^[1-9][0-9]{3}-(0?[1-9]|1[0-2])-(0?[1-9]|[1|2][0-9]|3[0|1])$/;
	return pattern.test(source);
}

/** 是否是时间格式 */
function isTimeFormat(source)
{
	// 格式为 2011-1-1 1:5 或 2011-01-01 01:05
	var pattern = /^[1-9][0-9]{3}-(0?[1-9]|1[0-1])-(0?[1-9]|[1|2][0-9]|3[0|1]) (0?[1-9]|1[0-9]|2[0-3]):(0?[1-9]|[1-5][0-9])$/;
	return pattern.test(source);
}

/** 是否是短日期格式 */
function isShortDateFormat(source)
{
	//格式为 20120103
	var pattern = /^[1-9][0-9]{3}(0[1-9]|1[0-2])(0[1-9]|[1|2][0-9]|3[0|1])$/;
	return pattern.test(source);
}

/** 将一个符串转化为日期格式：注意，字符串格式必须是：20120101 这种8位日期 */
function parseDate(source)
{
	if (!source) return null;
	if (!isShortDateFormat(source)) return null;
	
	var y = source.substring(0, 4);
	var m = source.substring(4, 6);
	var d = source.substring(6, 8);
	var sz = m + "/" + d + "/" + y;
	var time = Date.parse(sz);
	
	if (isNaN(time)) return null;
	
	var date = new Date();
	date.setTime(time);
	
	return date;
}

/** 将时间转化成为 20120101 的字符串格式 */
function dateToString(date)
{
	var y = date.getFullYear();
	var m = date.getMonth() + 1;
	var d = date.getDate();
	
	var sy = y.toString();
	var sm = m < 10 ? "0" + m : m.toString();
	var sd = d < 10 ? "0" + d : d.toString();
	
	return sy + sm + sd;
}

/** 将时间转化成为 2012-01-01 的字符串格式 */
function dateToLongString(date)
{
	var y = date.getFullYear();
	var m = date.getMonth() + 1;
	var d = date.getDate();
	
	var sy = y.toString();
	var sm = m < 10 ? "0" + m : m.toString();
	var sd = d < 10 ? "0" + d : d.toString();
	
	return sy + "-" + sm  + "-" + sd;
}

/** 是否是小数 */
function isDoubleFormat(source)
{
	if (isIntegerFormat(source)) return true;
	
	var pattern = /^\d+\.\d+$/;
	return pattern.test(source);
}

/** 是否是整数 */
function isIntegerFormat(source)
{
	var pattern = /^\d+$/;
	return pattern.test(source);
}

/** 绑定浏览器事件。注意：name参数不带on，如onload，则写为load，同时，func参数不需要带() */
function sinkEvent(name, func)
{
	if (window.attachEvent)
	{
		window.attachEvent("on" + name, func);
	}
	else if (window.addEventListener)
	{
		window.addEventListener(name, func);
	}
	else
	{
		window.alert("bind window event failed: " + name);
	}
}